/**
 * *****************************************************************************
 * This file is part of the EEG-database project
 *
 * ==========================================
 *
 * Copyright (C) 2013 by University of West Bohemia (http://www.zcu.cz/en/)
 *
 *  ***********************************************************************************************************************
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 *
 *  ***********************************************************************************************************************
 *
 * ExperimentOptParamDef.java, 2013/10/02 00:01 Jakub Rinkes
 * ****************************************************************************
 */
package cz.zcu.kiv.eegdatabase.data.pojo;

// Generated 2.12.2013 0:56:28 by Hibernate Tools 3.4.0.CR1

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;

/**
 * ExperimentOptParamDef generated by hbm2java
 */
@Entity
@Table(name = "EXPERIMENT_OPT_PARAM_DEF")
public class ExperimentOptParamDef implements java.io.Serializable {

	private int experimentOptParamDefId;
	private String paramName;
	private String paramDataType;
	private int defaultNumber;
	private Set<ExperimentOptParamVal> experimentOptParamVals = new HashSet<ExperimentOptParamVal>(
			0);
	private Set<ResearchGroup> researchGroups = new HashSet<ResearchGroup>(0);

	public ExperimentOptParamDef() {
	}

	public ExperimentOptParamDef(String paramName, String paramDataType) {
		this.paramName = paramName;
		this.paramDataType = paramDataType;
	}

	public ExperimentOptParamDef(String paramName, String paramDataType,
			int defaultNumber,
			Set<ExperimentOptParamVal> experimentOptParamVals,
			Set<ResearchGroup> researchGroups) {
		this.paramName = paramName;
		this.paramDataType = paramDataType;
		this.defaultNumber = defaultNumber;
		this.experimentOptParamVals = experimentOptParamVals;
		this.researchGroups = researchGroups;
	}

	@GenericGenerator(name = "generator", strategy = "increment")
	@Id
	@GeneratedValue(generator = "generator")
	@Column(name = "EXPERIMENT_OPT_PARAM_DEF_ID", nullable = false, precision = 22, scale = 0)
	public int getExperimentOptParamDefId() {
		return this.experimentOptParamDefId;
	}

	public void setExperimentOptParamDefId(int experimentOptParamDefId) {
		this.experimentOptParamDefId = experimentOptParamDefId;
	}

	@Column(name = "PARAM_NAME", nullable = false, length = 30)
	public String getParamName() {
		return this.paramName;
	}

	public void setParamName(String paramName) {
		this.paramName = paramName;
	}

	@Column(name = "PARAM_DATA_TYPE", nullable = false, length = 20)
	public String getParamDataType() {
		return this.paramDataType;
	}

	public void setParamDataType(String paramDataType) {
		this.paramDataType = paramDataType;
	}

	@Column(name = "IS_DEFAULT", precision = 1, scale = 0)
	public int getDefaultNumber() {
		return this.defaultNumber;
	}

	public void setDefaultNumber(int defaultNumber) {
		this.defaultNumber = defaultNumber;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "experimentOptParamDef")
	public Set<ExperimentOptParamVal> getExperimentOptParamVals() {
		return this.experimentOptParamVals;
	}

	public void setExperimentOptParamVals(
			Set<ExperimentOptParamVal> experimentOptParamVals) {
		this.experimentOptParamVals = experimentOptParamVals;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "EXPERIMENT_OPT_PARAM_GROUP_REL", joinColumns = { @JoinColumn(name = "EXPERIMENT_OPT_PARAM_DEF_ID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "RESEARCH_GROUP_ID", nullable = false, updatable = false) })
	public Set<ResearchGroup> getResearchGroups() {
		return this.researchGroups;
	}

	public void setResearchGroups(Set<ResearchGroup> researchGroups) {
		this.researchGroups = researchGroups;
	}

}
